<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // promise 周边方法
        //一.promise的实例方法 二.promise 的静态方法
        // -.promise里的实例方法
        //1.catch: 捕捉promise 链上的错误;
        // let p = new Promise((resolve, reject) => {
        //     // resolve(111);
        //     reject("error");
        // })
        // p.then((res) => {
        //     console.log(res);
        // }).catch((err) => {
        //     console.log(err); //error
        // })


        // //多个promise 对象 执行
        // function fn1() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             res(111);
        //             rej("错误");
        //         }, 1000);
        //     })
        // }

        // function fn2() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             // res(222);
        //             rej("222错误");
        //         }, timeout);
        //     })
        // }

        // function fn3() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             res(333);
        //         }, 1000);
        //     })
        // }


        fn1().then((res, rej) => {
            console.log(res); // undefined
            return fn2();
        }).then((res, rej) => {
            console.log(res);
            return fn3();
        }).then((res, rej) => {
            console.log(res);
        }).catch(err => console.log("catch", err)); // catch ReferenceError: fn2 is not defined



        async function fn1() {
            try {
                await fn2();
            } catch (err) {
                console.log("错误", err); // 错误 ReferenceError: fn2 is not defined
            }
        }
        fn1();


        // 2.finally :  无论成功或者失败都会最后执行,promise执行完了之后调用
        fn1().finally(() => {
            console.log("执行完了");
        })
    </script>
</body>

</html>